/*
 * @Description: 时间工具类
 * @Author: DHL
 * @Date: 2021-12-21 16:22:26
 * @LastEditors: DHL
 * @LastEditTime: 2022-09-17 15:21:54
 */

import dayjs from 'dayjs'
import { isEmpty } from './isUtils'

/**
 * 获取日期格式化规则
 * @param {*} format
 */
function getFormat(format = 'YYYY-MM-DD') {
  // 转换为dayjs格式
  format = format.toLocaleUpperCase()
  format = format.replace(':MM', ':mm')
  format = format.replace(':SS', ':ss')
  format = format.replace('MMSS', 'mmss')
  format = format.replace('HHMM', 'HHmm')
  return format
}

/**
 * 获取时间戳
 * @returns
 */
export function getTimestamp() {
  return new Date().getTime()
}

/**
 * 获取当前日期
 * @param format
 * @returns
 */
export function getDate(format = 'YYYY-MM-DD') {
  return dayjs().format(getFormat(format))
}

/**
 * 获取当前日期时间
 * @param format
 * @returns
 */
export function getDateTime(format = 'YYYY-MM-DD HH:mm:ss') {
  return dayjs().format(getFormat(format))
}

/**
 * 日期格式化
 * @param date
 * @param format
 */
export function dateFormat(date: Date, format = 'YYYY-MM-DD') {
  if (!date) {
    return ''
  }

  return dayjs(date).format(getFormat(format))
}


/**
 * 日期转时间戳
 * 此值不包含毫秒信息，会进位到秒
 * @param {*} date 
 * @param {*} format 
 */
export function dateToUnix(date) {
  if (isEmpty(date)) {
    return ''
  }
  return dayjs(date).unix()
}


/**
 * 周几数字转明文
 * @param {*} weekNum [0 ~ 6]
 */
export function getWeek(weekNum: number) {
  const week = {
    0: '星期日',
    1: '星期一',
    2: '星期二',
    3: '星期三',
    4: '星期四',
    5: '星期五',
    6: '星期六'
  }

  return week[weekNum]
}


/**
 * 获取当前为周几
 */
export function getNowWeek() {
  return getWeek(dayjs().day())
}


export const dateUtil = dayjs
